package IT.DataAccess;

import IT.Entities.ProyectoActividadMensaje;
import IT.Entities.ProyectoActividadMensajeAdjunto;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import java.util.logging.Level;
import java.util.logging.Logger;

import java.util.List;

public class DatProyectoMensaje implements IDatProyectoMensaje{
    
    private BDConexion oBase;
    
    private Connection oConexion;
    private CallableStatement oCst;    
    private ResultSet oRst;    
    
    private List<ProyectoActividadMensaje> oLista;
    private ProyectoActividadMensaje oMensaje;
    
    private List<ProyectoActividadMensajeAdjunto> oListaDetalle;
     
    public List<ProyectoActividadMensaje> Listar() {
        
        oLista=new ArrayList<ProyectoActividadMensaje>();
         
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ProyectoActividadMensajeListar()}");         
            oRst = oCst.executeQuery();

            while (oRst.next()) {
                oLista.add(new ProyectoActividadMensaje(oRst.getInt("cod_men_in"),
                        oRst.getDate("fec_crea_men_dt"),
                        oRst.getString("fec_crea_men_vc"),
                        oRst.getString("con_men_vc"),
                        oRst.getInt("cod_emp_in"),
                        oRst.getString("Empleado"),
                        oRst.getInt("cod_act_in"), 
                        oRst.getInt("est_men_in"), 
                        oRst.getString("Estado")));
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatProyectoMensaje.class.getName()).log(Level.SEVERE, null, ex);
        }
       return oLista;
    }

    public ProyectoActividadMensaje Ind(int nMensaje) {
        oMensaje=new ProyectoActividadMensaje();
         try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ProyectoActividadMensajeInd(?)}");      
            oCst.setInt(1, nMensaje);
            oRst = oCst.executeQuery();

            while (oRst.next()) {
                oMensaje.setCod_men_in(oRst.getInt("cod_men_in"));
                oMensaje.setFec_crea_men_dt(oRst.getDate("fec_crea_men_dt"));
                oMensaje.setFec_crea_men_vc(oRst.getString("fec_crea_men_vc"));
                oMensaje.setCon_men_vc( oRst.getString("con_men_vc"));
                oMensaje.setCod_emp_in(oRst.getInt("cod_emp_in"));
                oMensaje.setCod_act_in(oRst.getInt("cod_act_in"));
                oMensaje.setEst_men_in(oRst.getInt("est_men_in"));
                oMensaje.setEstado(oRst.getString("Estado"));
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatProyectoMensaje.class.getName()).log(Level.SEVERE, null, ex);
        }
       return oMensaje;    
    }

    public ProyectoActividadMensaje Ubi(int nActividad) {
        
        oMensaje=new ProyectoActividadMensaje();
         
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ProyectoActividadMensajeUbi(?)}");  
            oCst.setInt(1, nActividad);
            oRst = oCst.executeQuery();

            while (oRst.next()) {
                oMensaje.setCod_men_in(oRst.getInt("cod_men_in"));
                oMensaje.setFec_crea_men_dt(oRst.getDate("fec_crea_men_dt"));
                oMensaje.setFec_crea_men_vc(oRst.getString("fec_crea_men_vc"));
                oMensaje.setCon_men_vc( oRst.getString("con_men_vc"));
                oMensaje.setCod_emp_in(oRst.getInt("cod_emp_in"));
                oMensaje.setEmpleado(oRst.getString("Empleado"));
                oMensaje.setCod_act_in(oRst.getInt("cod_act_in"));
                oMensaje.setEst_men_in(oRst.getInt("est_men_in"));
                oMensaje.setEstado(oRst.getString("Estado"));
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatProyectoMensaje.class.getName()).log(Level.SEVERE, null, ex);
        }
       return oMensaje;    
    }
       
    public void Insertar(ProyectoActividadMensaje ent) {
          try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ProyectoActividadMensajeInsertar(?,?,?)}");     
     
            oCst.setString(1, ent.getCon_men_vc());
            oCst.setInt(2, ent.getCod_emp_in());
            oCst.setInt(3, ent.getCod_act_in());        
            
            oCst.execute();         
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatProyectoMensaje.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void Estado(int nMensaje, int nEstado) {
         try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ProyectoActividadMensajeEstado(?,?)}");     
     
            oCst.setInt(1, nMensaje);
            oCst.setInt(2, nEstado);        
            
            oCst.execute();         
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatProyectoMensaje.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //Adjuntos
    
    public List<ProyectoActividadMensajeAdjunto> ListarAdjunto(int nMensaje) {
         oListaDetalle=new ArrayList<ProyectoActividadMensajeAdjunto>();
         
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ProyectoActividadMensajeAdjListar(?)}");        
            oCst.setInt(1, nMensaje);
            
            oRst = oCst.executeQuery();

            while (oRst.next()) {
               oListaDetalle.add(new ProyectoActividadMensajeAdjunto(
                       oRst.getInt("cod_menajd_in"), oRst.getString("rut_menajd_vc"), oRst.getString("des_menajd_vc")));
            }
            oRst.close();
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatProyectoMensaje.class.getName()).log(Level.SEVERE, null, ex);
        }
       return oListaDetalle;
    }

    public void InsertarAdj(ProyectoActividadMensajeAdjunto ent) {
       try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ProyectoActividadMensajeAdjInsertar(?,?,?)}");     
     
            oCst.setString(1, ent.getRut_menajd_vc());
            oCst.setString(2, ent.getDes_menajd_vc());
            oCst.setInt(3, ent.getCod_men_in());        
            
            oCst.execute();         
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatProyectoMensaje.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void EliminarAdj(int nAdjunto) {
        try {
            oBase = new BDConexion();
            oConexion = oBase.getDataSource().getConnection();
            oBase = null;
            oCst = oConexion.prepareCall("{call usp_ProyectoActividadMensajeAdjEliminar(?)}");     
     
            oCst.setInt(1, nAdjunto);  
            
            oCst.execute();         
            oCst.close();
            oConexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(DatProyectoMensaje.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}
